﻿using System;
using System.Collections.Generic;
using Sebrae.Academico.InfraEstrutura.Core.UnitOfWork;
using Sebrae.Academico.Trilhas.BM.Classes;
using Sebrae.Academico.Trilhas.BP;
using Sebrae.Academico.Trilhas.Dominio.Classes;

namespace Sebra.Academico.Trilhas.BP
{
    public class ManterMatriculaTrilha : BusinessProcessBase
    {

        private BMUsuarioTrilha matriculaTrilha = null;

        public ManterMatriculaTrilha()
            : base()
        {
            matriculaTrilha = new BMUsuarioTrilha(unitOfWork);
        }
        
        public UsuarioTrilha ObterMatriculaTrilhaporID(int pId)
        {
            try
            {
                unitOfWork = new UnitOfWork();
                matriculaTrilha = new BMUsuarioTrilha(unitOfWork);

                return matriculaTrilha.ObterPorId(pId);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void IncluirMatriculaTrilha(UsuarioTrilha pUsuarioTrilha)
        {
            try
            {
                matriculaTrilha.ValidarMatriculaTrilhaInformada(pUsuarioTrilha);
                //unitOfWork.IniciarTransacao();
                matriculaTrilha.Salvar(pUsuarioTrilha);
                //unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                //unitOfWork.Rollback();
                throw ex;
            }
        }

        public void AlterarMatriculaTrilha(UsuarioTrilha pUsuarioTrilha)
        {

            try
            {
                matriculaTrilha.ValidarMatriculaTrilhaInformada(pUsuarioTrilha);
                //unitOfWork.IniciarTransacao();
                matriculaTrilha.Salvar(pUsuarioTrilha);
                //unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                //unitOfWork.Rollback();
                throw ex;
            }
        }

        public void ExcluirMatriculaTrilha(UsuarioTrilha pusuarioTrilha)
        {
            matriculaTrilha.ExcluirUsuarioTrilha(pusuarioTrilha);
        }

        public IList<UsuarioTrilha> ObterMatriculaTrilhaPorFiltro(UsuarioTrilha pusuarioTrilha)
        {
            matriculaTrilha.VerificarCamposObrigatoriosDoFiltro(pusuarioTrilha);
            return matriculaTrilha.ObterPorFiltro(pusuarioTrilha);
        }


    }

}